#ifndef __LIB_AGORA_CORE_IEMPACTER_H__
#define __LIB_AGORA_CORE_IEMPACTER_H__

#include "Header.h"
#include "IBuffer.h"

namespace AgoraCore
{

class IEmpacter
{
public:
	virtual ~IEmpacter(){};
	virtual void SetId(int id) = 0;
	virtual void EmpactAudio(IBuffer *data, IBuffer *out, unsigned int &size, InfoAudioBase* info, int sourceId, InfoAudioSpacial* infoSpacial = 0) = 0;
	virtual void EmpactAdmin(IBuffer *data, IBuffer *out, unsigned int &size, InfoAdmin* info) = 0;
	virtual void EmpactText(IBuffer *data, IBuffer *out, unsigned int &size) = 0;
	virtual void *Desempact(void *data, unsigned int &size, Header *header) = 0;
	virtual unsigned int GetPacketSizeWithoutHeader(void *header) = 0;
	virtual unsigned int GetHeaderSize() = 0;
};

}

#endif